package com.changsideal.excel.util.bean;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @ClassName IExcelToBeanOpera
 * @Description 只做Excel转bean的操作使用，MainBean衍生物
 * @Author Create by Chansideal.Haosc
 * @Date 2019/7/9 13:42
 * @Version 1.0
 **/
public interface IExcelToBeanOpera<T> {

    /**
     * 内置方法：用于将需要转换的excel文件内容转换成指定类型bean list集合返回
     *
     * @param workClass 自定义转换bean class类型
     * @return 返回指定类型bean list集合
     */
    List<T> invocationListBean(Class<T> workClass);

    /**
     * 内置方法：用于根据传入自定义bean类型将excel指定行的数据转为bean
     *
     * @param workClass 指定类型
     * @param rowCount  指定获取行
     * @return 返回对象
     */
    T invocationOneBean(Class<T> workClass, Integer rowCount);

    /**
     * 内置方法：用于将需要转换的excel文件内容转换成指定类型bean Map集合返回
     *
     * @param workClass 指定类型
     * @param order     是否需要map排序，默认不排序
     * @return 返回处理的Map
     */
    Map<String, T> invocationToMapBean(Class<T> workClass, Boolean order);

    /**
     * 内置方法：用于将需要转换的excel文件内容转换成指定类型bean Set集合返回（用于数据去重）
     *
     * @param workClass 指定类型
     * @return 返回去重的指定类型bean集合
     */
    Set<T> invocationToSetBean(Class<T> workClass);
}
